/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package redes;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Thiago
 */
public class Servidor extends Thread{
    int PORTA = 8000;
    
    Roteador r;
    
    String recebido;

    public Servidor(Roteador r){
        this.r = r;
        this.PORTA += r.getIdRoteador();
    }
    
    @Override
    public void run(){
        try {
            servidor();
        } catch (SocketException ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void servidor() throws SocketException{
//        System.out.println("Servidor UDP executando:");
        
        DatagramSocket serverSocket = new DatagramSocket(PORTA);
        DatagramPacket pacoteRecebido;

        byte[] receiveData = new byte[1025];

        try {
            while (true) {
                pacoteRecebido = new DatagramPacket(receiveData, receiveData.length);

                serverSocket.receive(pacoteRecebido);

                InetAddress IPCliente = pacoteRecebido.getAddress();
                int port = pacoteRecebido.getPort();

                byte[] dadosPacoteRecebido = pacoteRecebido.getData();
                recebido = new String(dadosPacoteRecebido);

                r.receberMsg(recebido);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
